import { _decorator, Component, Node } from 'cc';
const { ccclass, property } = _decorator;

@ccclass('levelConfig')
export class levelConfig {
    /**
     * 三维关卡配置数据结构
     * 结构说明：
     * - 第一维：关卡索引（从0开始）
     * - 第二维：行坐标（0-9，从上到下）
     * - 第三维：列坐标（0-9，从左到右）
     * 取值规则：
     * - -1：无箱子
     * - 0：不可推动的箱子
     * - 1：可推动的箱子
     * - 2：红点
     */
    public static readonly levels: number[][][] = [
        // 关卡0示例（10x10）
        //第零关
        [
            [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
            [0, -1, -1, -1, -1, -1, -1, -1, -1, 0],
            [0, -1, -1, -1, -1, -1, -1, -1, -1, 0],
            [0, -1, -1, -1, -1, -1, -1, -1, -1, 0],
            [0, -1, -1, -1, -1, -1, 1, -1, -1, 0],
            [0, -1, -1, -1, -1, -1, 1, -1, -1, 0],
            [0, -1, -1, -1, 1, -1, -1, -1, -1, 0],
            [0, -1, -1, -1, -1, -1, -1, -1, - 1, 0],
            [0, -1, -1, -1, -1, -1, -1, -1, -1, 0],
            [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        ],
        //第一关
        [
            [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
            [0, -1, -1, -1, 0, 0, 0, 0, 0, 0],
            [0, -1, 0, -1, -1, -1, -1, 0, 0, 0],
            [0, -1, 0, -1, 0, -1, -1, 0, 0, 0],
            [0, -1, 0, -1, -1, -1, -1, 0, 0, 0],
            [0, -1, 1, -1, 1, -1, -1, 0, 0, 0],
            [0, -1, -1, -1, 0, -1, -1, -1, -1, 0],
            [0, 0, 0, 0, 0, -1, 0, 0, -1, 0],
            [0, 0, 0, 0, 0, -1, -1, -1, -1, 0],
            [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        ],
        //第二关
        [
            [0, 0, 0, 0, 0, 0, 0, 0, 0],
            [0, 0, 0, 0, -1, -1, -1, -1, 0],
            [0, -1, -1, -1, -1, -1, -1, -1, 0],
            [0, 0, -1, 0, 0, -1, 1, -1, 0],
            [0, 0, -1, -1, -1, -1, -1, -1, 0],
            [0, 0, -1, -1, 0, -1, 1, -1, 0],
            [0, 0, 0, 0, 0, -1, -1, -1, 0],
            [0, 0, 0, 0, 0, 0, 0, -1, 0],
            [0, 0, 0, 0, 0, 0, 0, 0, 0]
        ],
        //第三关
        [
            [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
            [0, 0, -1, -1, -1, -1, 0, 0, 0, 0],
            [0, -1, -1, -1, -1, -1, 0, 0, 0, 0],
            [0, -1, -1, -1, -1, -1, -1, 0, 0, 0],
            [0, -1, 1, -1, 0, 0, -1, 0, 0, 0],
            [0, -1, -1, -1, -1, -1, -1, 0, 0, 0],
            [0, -1, 0, 0, 0, -1, 1, -1, -1, 0],
            [0, -1, -1, 0, 0, -1, -1, 0, -1, 0],
            [0, -1, -1, -1, -1, -1, 1, -1, -1, 0],
            [0, 0, 0, 0, 0, 0, -1, -1, -1, 0],
            [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        ],
        //第四关
        [
            [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
            [0, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0],
            [0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0],
            [0, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0],
            [0, -1, 0, 1, 1, 1, -1, 0, 0, 0, -1, 0],
            [0, -1, -1, -1, -1, 0, -1, 1, -1, 1, -1, 0],
            [0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0],
            [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        ],
        //第五关
        [
            [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
            [0, -1, -1, -1, -1, 0, 0, 0, 0, 0],
            [0, -1, -1, 1, 1, 1, -1, -1, -1, 0],
            [0, -1, 0, -1, -1, -1, -1, 0, -1, 0],
            [0, -1, 0, 1, -1, 1, -1, 1, -1, 0],
            [0, -1, -1, -1, -1, 0, 0, 0, 0, 0],
            [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        ]

    ];

    // 关卡0无效，从1开始,每关3~5个红点
    public static readonly redPosition: number[][][] = [
        [
            [5, 5],
            [5, 6],
            [5, 7],
        ],
        [
            [6, 3],
            [6, 6],
        ],
        [
            [2, 4],
            [3, 2],
        ],
        [
            [9, 8],
            [5, 6],
            [8, 1],
        ],
        [
            [1, 1],
            [2, 1],
            [3, 2],
            [2, 4],
            [5, 8],
            [5, 9],
        ],
        [
            [1, 3],
            [2, 2],
            [4, 1],
            [4, 4],
            [3, 5],
            [2, 7],
        ]
    ]
    //玩家初始位置
    public static readonly playerPosition: number[][] = [
        // 关卡0无效，从1开始
        //行列索引从0开始
        [5, 5], //0
        [6, 7], //1
        [6, 7], //2
        [5, 5], //3
        [3, 9], //4
        [1, 2], //5
        [5, 6],
        [5, 5],
        [5, 4],
        [5, 3],
        [5, 5],
        [5, 4],
        [5, 7],
    ];
}